8.1
source(glue(tsa_function_dir, "/ex8_1.R", sep = ""), echo = F)
(a)
sacf_vec = c(-0.48, 0.04, -0.06, 0.14, -0.22, 0.19, -0.10, -0.02, 0.09, 0.03, -0.12, 0.09, 0.03)
spacf_vec = c(-0.48, -0.24, -0.21, 0.01, -0.20, -0.01, -0.05, -0.15, 0.04, 0.06, -0.04, 0.02, 0.06)
n = 100 ; z_bar = 24.75 ; z_sd = 9.27
ex8_1_a = ex8_1(sacf_vec, spacf_vec, n = n, z_bar = z_bar, z_sd = z_sd )

## |spacf[k]| = -0.48, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## |spacf[k]| = -0.24, crit = 0.196
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(2) is acceptable
## |spacf[k]| = -0.21, crit = 0.196
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(3) is acceptable
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(4) is unacceptable
## |spacf[k]| = -0.2, crit = 0.196
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(5) is acceptable
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(6) is unacceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
## H_0 : phi_1111 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(11) is unacceptable
## H_0 : phi_1212 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(12) is unacceptable
## H_0 : phi_1313 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(13) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(2) is unacceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(3) is unacceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(4) is unacceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(5) is unacceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(6) is unacceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(7) is unacceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(8) is unacceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(9) is unacceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## H_0 : rho_11 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(11) is unacceptable
## H_0 : rho_12 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(12) is unacceptable
## H_0 : rho_13 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(13) is unacceptable
## MA(1)
## 적절한 모형 : AR(3), MA(1) ; 변수의 절약에 의해 MA(1) 선택
## s_wbar = 0.1854
## t_0 = 133.495145631068, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
(b)
sacf_vec = c(0.59, 0.44, 0.33, 0.23, 0.24, 0.16, 0.05, 0.01, -0.03, -0.11, -0.08, -0.07, 0.01)
spacf_vec = c(0.59, 0.13, 0.04, 0.02, 0.12, -0.05, -0.12, -0.03, -0.01, -0.13, 0.06, 0.04, 0.13)
n = 100 ; z_bar = 25.56 ; z_sd = 3.85
ex8_1_b = ex8_1(sacf_vec, spacf_vec, n = n, z_bar = z_bar, z_sd = z_sd )

## |spacf[k]| = 0.59, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(2) is unacceptable
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(3) is unacceptable
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(4) is unacceptable
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(5) is unacceptable
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(6) is unacceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
## H_0 : phi_1111 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(11) is unacceptable
## H_0 : phi_1212 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(12) is unacceptable
## H_0 : phi_1313 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(13) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(2) is acceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(3) is acceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(4) is unacceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(5) is unacceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(6) is unacceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(7) is unacceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(8) is unacceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(9) is unacceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## H_0 : rho_11 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(11) is unacceptable
## H_0 : rho_12 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(12) is unacceptable
## H_0 : rho_13 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(13) is unacceptable
## AR(1)
## 적절한 모형 : AR(1), MA(3) ; 변수의 절약에 의해 AR(1) 선택
## s_wbar = 0.568445687818986
## t_0 = 44.9647179101115, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
(c)
sacf_vec = c(0.97, 0.94, 0.91, 0.88, 0.85, 0.82, 0.79, 0.76, 0.73, 0.70, 0.67, 0.64, 0.61)
spacf_vec = c(0.97, -0.02, -0.01, -0.02, -0.02, -0.01, -0.02, -0.02, -0.02, -0.01, -0.01, -0.02, -0.01)
n = 100 ; z_bar = 548.52 ; z_sd = 149.90
ex8_1_c = ex8_1(sacf_vec, spacf_vec, n = n, z_bar = z_bar, z_sd = z_sd )

## |spacf[k]| = 0.97, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(2) is unacceptable
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(3) is unacceptable
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(4) is unacceptable
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(5) is unacceptable
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(6) is unacceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
## H_0 : phi_1111 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(11) is unacceptable
## H_0 : phi_1212 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(12) is unacceptable
## H_0 : phi_1313 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(13) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(2) is acceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(3) is acceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(4) is acceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(5) is acceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(6) is acceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(7) is acceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(8) is acceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(9) is acceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## H_0 : rho_11 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(11) is unacceptable
## H_0 : rho_12 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(12) is unacceptable
## H_0 : rho_13 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(13) is unacceptable
## AR(1)
## 적절한 모형 : AR(1), MA(9) ; 변수의 절약에 의해 AR(1) 선택
## s_wbar = 25.7024958710239
## t_0 = 21.3411181059028, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
(d)
sacf_vec = c(-0.44, -0.05, -0.01, -0.03, 0.12, -0.15, 0.15, -0.04, -0.10, 0.09, 0.08, -0.07, 0.06)
spacf_vec = c(-0.44, -0.31, -0.25, -0.25, -0.07, -0.21, -0.01, 0.02, -0.09, -0.02, 0.03, -0.02, 0.01)
n = 100 ; z_bar = 19.02 ; z_sd = 1.351
ex8_1_d = ex8_1(sacf_vec, spacf_vec, n = n, z_bar = z_bar, z_sd = z_sd, diff = TRUE)

## |spacf[k]| = -0.44, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## |spacf[k]| = -0.31, crit = 0.196
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(2) is acceptable
## |spacf[k]| = -0.25, crit = 0.196
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(3) is acceptable
## |spacf[k]| = -0.25, crit = 0.196
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(4) is acceptable
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(5) is unacceptable
## |spacf[k]| = -0.21, crit = 0.196
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(6) is acceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
## H_0 : phi_1111 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(11) is unacceptable
## H_0 : phi_1212 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(12) is unacceptable
## H_0 : phi_1313 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(13) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(2) is unacceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(3) is unacceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(4) is unacceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(5) is unacceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(6) is unacceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(7) is unacceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(8) is unacceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(9) is unacceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## H_0 : rho_11 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(11) is unacceptable
## H_0 : rho_12 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(12) is unacceptable
## H_0 : rho_13 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(13) is unacceptable
## MA(1)
## 적절한 모형 : AR(4), MA(1) ; 변수의 절약에 의해 MA(1) 선택
## t_0 = 14.0784603997039, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
8.2
(a)
library(glue)
library(astsa) # library for function acf2 & sarima
library(portes) # library for function LjungBox
library(lmtest) # library for function coeftest
ex8_2a = scan(glue("{dataset_dir}/ex8_2a.txt"))
ex8_2a = ts(ex8_2a) ; ex8_2a = log(ex8_2a)
ts.plot(ex8_2a)

acf2(ex8_2a, max.lag = 24, main = "ex8_2a : SACF, SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF -0.39 -0.19 0.23 -0.20 0.04 0.16 -0.10 -0.08 0.14 0.01 -0.19 0.06
## PACF -0.39 -0.40 -0.05 -0.24 -0.13 0.02 0.02 -0.11 0.02 0.12 -0.11 -0.17
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF 0.05 -0.05 0.14 -0.09 -0.02 0.04 -0.03 -0.01 0.13 -0.10 -0.07 0.14
## PACF -0.09 -0.05 0.07 -0.03 0.07 0.02 -0.03 -0.06 0.16 0.02 -0.12 0.01
fit1 = arima(ex8_2a, order = c(2,0,0)) # 절편 있는 AR(2) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.546347 0.091487 -5.9719 2.345e-09 ***
## ar2 -0.400105 0.091087 -4.3926 1.120e-05 ***
## intercept 5.822832 0.015971 364.5810 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/100
## [1] 0.09529587
# fit2 = arima(ex8_2a, order = c(2,0,0), include.mean = F) # 절편 없는 AR(2) 모형 적합
# summary(fit2)
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.02 -0.12 -0.15 -0.15 0.09 0.09 -0.04 -0.03 0.05 -0.04 -0.20 -0.05 0.09
## PACF -0.02 -0.12 -0.15 -0.18 0.04 0.03 -0.06 -0.03 0.08 -0.04 -0.24 -0.08 0.06
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF 0.08 0.16 -0.07 -0.06 -0.05 0.02 0.07 0.1 -0.06 -0.07 0.04
## PACF -0.01 0.09 0.00 0.05 -0.05 0.01 0.06 0.1 -0.10 -0.05 0.10
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 7.783067 4 0.09985584
## 12 13.410133 10 0.20163591
## 18 19.456914 16 0.24568230
## 24 22.672358 22 0.42042344
sarima(ex8_2a, 2,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value -0.993182
## iter 2 value -1.134944
## iter 3 value -1.144477
## iter 4 value -1.164069
## iter 5 value -1.165861
## iter 6 value -1.166081
## iter 7 value -1.166082
## iter 7 value -1.166082
## iter 7 value -1.166082
## final value -1.166082
## converged
## initial value -1.172776
## iter 2 value -1.172782
## iter 3 value -1.172799
## iter 4 value -1.172811
## iter 5 value -1.172814
## iter 6 value -1.172814
## iter 6 value -1.172814
## iter 6 value -1.172814
## final value -1.172814
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 -0.5463 0.0915 -5.9719 0
## ar2 -0.4001 0.0911 -4.3926 0
## xmean 5.8228 0.0160 364.5810 0
##
## sigma^2 estimated as 0.09529587 on 97 degrees of freedom
##
## AIC = 0.5722493 AICc = 0.5747493 BIC = 0.6764561
##

sarima.for(ex8_2a, 6, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 5.915245 5.944070 5.719620 5.830714 5.859822 5.799469
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 0.3087003 0.3517687 0.3531645 0.3631602 0.3647187 0.3650460
sarima.for(ex8_2a, 12, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 5.915245 5.944070 5.719620 5.830714 5.859822 5.799469 5.820797 5.833292
## [9] 5.817932 5.821325 5.825617 5.821914
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 0.3087003 0.3517687 0.3531645 0.3631602 0.3647187 0.3650460 0.3657035
## [8] 0.3657494 0.3657923 0.3658319 0.3658326 0.3658368
sarima.for(ex8_2a, 18, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 118
## Frequency = 1
## [1] 5.915245 5.944070 5.719620 5.830714 5.859822 5.799469 5.820797 5.833292
## [9] 5.817932 5.821325 5.825617 5.821914 5.822220 5.823534 5.822694 5.822627
## [17] 5.823000 5.822823
##
## $se
## Time Series:
## Start = 101
## End = 118
## Frequency = 1
## [1] 0.3087003 0.3517687 0.3531645 0.3631602 0.3647187 0.3650460 0.3657035
## [8] 0.3657494 0.3657923 0.3658319 0.3658326 0.3658368 0.3658390 0.3658390
## [15] 0.3658393 0.3658394 0.3658394 0.3658395
sarima.for(ex8_2a, 24, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 124
## Frequency = 1
## [1] 5.915245 5.944070 5.719620 5.830714 5.859822 5.799469 5.820797 5.833292
## [9] 5.817932 5.821325 5.825617 5.821914 5.822220 5.823534 5.822694 5.822627
## [17] 5.823000 5.822823 5.822770 5.822870 5.822837 5.822815 5.822840 5.822835
##
## $se
## Time Series:
## Start = 101
## End = 124
## Frequency = 1
## [1] 0.3087003 0.3517687 0.3531645 0.3631602 0.3647187 0.3650460 0.3657035
## [8] 0.3657494 0.3657923 0.3658319 0.3658326 0.3658368 0.3658390 0.3658390
## [15] 0.3658393 0.3658394 0.3658394 0.3658395 0.3658395 0.3658395 0.3658395
## [22] 0.3658395 0.3658395 0.3658395
(b)
library(glue)
library(astsa) # library for function acf2 & sarima
library(portes) # library for function LjungBox
library(lmtest) # library for function coeftest
ex8_2b = scan(glue("{dataset_dir}/ex8_2b.txt"))
ex8_2b = ts(ex8_2b) ; n = length(ex8_2b) ; ex8_2b = log(ex8_2b)
ts.plot(ex8_2b)

acf2(ex8_2b, max.lag = 24, main = "ex8_2b : SACF, SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.59 0.46 0.25 0.11 0.05 0.04 -0.03 -0.04 -0.02 -0.05 -0.07 -0.06 -0.06
## PACF 0.59 0.17 -0.13 -0.07 0.03 0.05 -0.08 -0.03 0.07 -0.04 -0.07 0.02 0.02
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.03 0.09 0.07 0.03 -0.05 -0.19 -0.17 -0.21 -0.21 -0.19 -0.19
## PACF 0.01 0.16 -0.05 -0.11 -0.10 -0.18 0.08 -0.06 -0.08 0.00 -0.07
fit1 = arima(ex8_2b, order = c(1,0,0)) # 절편 있는 AR(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.6215577 0.0809138 7.6817 1.57e-14 ***
## intercept 4.6088498 0.0082792 556.6750 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 0.001010076
# fit2 = arima(ex8_2a, order = c(2,0,0), include.mean = F) # 절편 없는 AR(2) 모형 적합
# summary(fit2)
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.1 0.21 -0.03 -0.01 -0.05 0.07 -0.04 0.03 0.05 0.00 -0.04 0.00 -0.05
## PACF -0.1 0.20 0.00 -0.06 -0.05 0.08 -0.01 -0.01 0.06 0.01 -0.07 -0.02 -0.02
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.08 0.11 0.06 0.06 0.06 -0.23 -0.01 -0.08 -0.10 0.01 -0.01
## PACF -0.09 0.10 0.12 0.03 0.02 -0.25 -0.04 0.01 -0.11 0.01 0.01
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 6.496386 5 0.2608674
## 12 7.214314 11 0.7814718
## 18 10.997815 17 0.8566775
## 24 19.834540 23 0.6518714
sarima(ex8_2b, 1,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value -3.212757
## iter 2 value -3.442672
## iter 3 value -3.443404
## iter 4 value -3.443908
## iter 5 value -3.443947
## iter 6 value -3.443998
## iter 7 value -3.443999
## iter 8 value -3.443999
## iter 8 value -3.443999
## iter 8 value -3.443999
## final value -3.443999
## converged
## initial value -3.446384
## iter 2 value -3.446413
## iter 3 value -3.446422
## iter 4 value -3.446423
## iter 5 value -3.446423
## iter 5 value -3.446423
## iter 5 value -3.446423
## final value -3.446423
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.6216 0.0809 7.6817 0
## xmean 4.6088 0.0083 556.6750 0
##
## sigma^2 estimated as 0.001010076 on 98 degrees of freedom
##
## AIC = -3.99497 AICc = -3.993733 BIC = -3.916815
##

sarima.for(ex8_2b, 6, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 4.547943 4.570993 4.585319 4.594224 4.599759 4.603199
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 0.03178169 0.03742061 0.03938350 0.04011612 0.04039560 0.04050305
sarima.for(ex8_2b, 12, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 4.547943 4.570993 4.585319 4.594224 4.599759 4.603199 4.605338 4.606667
## [9] 4.607493 4.608006 4.608326 4.608524
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 0.03178169 0.03742061 0.03938350 0.04011612 0.04039560 0.04050305
## [7] 0.04054449 0.04056049 0.04056666 0.04056905 0.04056997 0.04057033
(c)
library(glue)
library(astsa) # library for function acf2 & sarima
library(portes) # library for function LjungBox
library(lmtest) # library for function coeftest
ex8_2c = scan(glue("{dataset_dir}/ex8_2c.txt"))
ex8_2c = ts(ex8_2c) ; n = length(ex8_2c)
ts.plot(ex8_2c)

acf2(ex8_2c, max.lag = 24, main = "ex8_2c : SACF, SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF -0.41 -0.15 0.37 -0.16 -0.01 0.21 -0.15 -0.10 0.21 -0.06 -0.21 0.19
## PACF -0.41 -0.39 0.16 0.07 0.09 0.20 0.06 -0.16 -0.04 0.04 -0.18 -0.08
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.09 -0.10 0.13 -0.16 -0.01 0.03 -0.09 -0.09 0.15 -0.09 -0.09 0.10
## PACF -0.09 -0.04 -0.01 -0.11 -0.03 -0.13 -0.14 -0.22 0.04 0.03 0.00 -0.04
adfTest(ex8_2c, lags = 0, type = "c") # c : case2 ; 절편이 있고 추세는 없는 경우
## Warning in adfTest(ex8_2c, lags = 0, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -15.2737
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:52 2025 by user: PC
adfTest(ex8_2c, lags = 1, type = "c")
## Warning in adfTest(ex8_2c, lags = 1, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -12.4898
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:52 2025 by user: PC
adfTest(ex8_2c, lags = 2, type = "c")
## Warning in adfTest(ex8_2c, lags = 2, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -6.3759
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:52 2025 by user: PC
fit1 = arima(ex8_2c, order = c(2,0,0)) # 절편 있는 AR(2) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.574883 0.091825 -6.2606 3.834e-10 ***
## ar2 -0.391975 0.091842 -4.2679 1.973e-05 ***
## intercept 250.004985 0.043637 5729.2594 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 0.7263745
# fit2 = arima(ex8_2c, order = c(0,0,1)) # 절편 있는 MA(1) 모형 적합
# coeftest(fit2)
# sum(fit2$residuals^2)/n
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.06 0.09 0.18 0.09 0.15 0.12 -0.08 -0.05 0.06 -0.07 -0.22 -0.02 -0.11
## PACF 0.06 0.08 0.17 0.07 0.12 0.07 -0.14 -0.12 0.03 -0.06 -0.23 0.01 -0.03
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.13 -0.06 -0.24 -0.15 -0.20 -0.17 -0.13 0.03 -0.10 -0.08 0.02
## PACF -0.07 -0.02 -0.13 -0.08 -0.22 -0.11 -0.04 0.13 -0.03 -0.02 0.02
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

# ts.plot(fit2$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)
# acf2(fit2$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")
#
# qqnorm(resid(fit2), main = "적합된 모형의 잔차의 정규성검정")
# qqline(resid(fit2), col = "red")
LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 9.346302 4 0.053003023
## 12 16.992870 10 0.074521899
## 18 35.206429 16 0.003723669
## 24 43.284090 22 0.004353274
sarima(ex8_2c, 2,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 0.024881
## iter 2 value -0.120118
## iter 3 value -0.132751
## iter 4 value -0.155603
## iter 5 value -0.155712
## iter 6 value -0.155724
## iter 7 value -0.155725
## iter 8 value -0.155725
## iter 8 value -0.155725
## final value -0.155725
## converged
## initial value -0.157204
## iter 2 value -0.157235
## iter 3 value -0.157239
## iter 4 value -0.157242
## iter 5 value -0.157242
## iter 5 value -0.157242
## iter 5 value -0.157242
## final value -0.157242
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 -0.5749 0.0918 -6.2606 0
## ar2 -0.3920 0.0918 -4.2679 0
## xmean 250.0050 0.0436 5729.2594 0
##
## sigma^2 estimated as 0.7263745 on 97 degrees of freedom
##
## AIC = 2.603394 AICc = 2.605894 BIC = 2.707601
##

sarima.for(ex8_2c, 6, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 250.1927 250.2910 249.7670 250.0297 250.0841 249.9498
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 0.8522760 0.9830739 0.9844695 1.0092287 1.0149045 1.0152241
sarima.for(ex8_2c, 12, 2, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 250.1927 250.2910 249.7670 250.0297 250.0841 249.9498 250.0057 250.0262
## [9] 249.9925 250.0038 250.0105 250.0022
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 0.8522760 0.9830739 0.9844695 1.0092287 1.0149045 1.0152241 1.0168037
## [8] 1.0170545 1.0170963 1.0171948 1.0172049 1.0172092
(d)
library(glue)
library(astsa) # library for function acf2 & sarima
library(portes) # library for function LjungBox
library(lmtest) # library for function coeftest
ex8_2d = scan(glue("{dataset_dir}/ex8_2d.txt"))
ex8_2d = ts(ex8_2d) ; n = length(ex8_2d)
ts.plot(ex8_2d)

acf2(ex8_2d, max.lag = 24, main = "ex8_2d : SACF, SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.67 0.53 0.36 0.2 0.14 0.10 0.02 -0.04 -0.03 -0.06 -0.07 -0.04 -0.06
## PACF 0.67 0.15 -0.09 -0.1 0.04 0.05 -0.10 -0.09 0.09 -0.02 -0.05 0.03 -0.03
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.03 0.05 0.02 -0.03 -0.12 -0.20 -0.22 -0.24 -0.27 -0.26 -0.28
## PACF 0.06 0.10 -0.11 -0.13 -0.12 -0.08 0.02 -0.08 -0.09 0.00 -0.08
adfTest(ex8_2c, lags = 0, type = "ct") # c : case3 ; 절편이 있고 추세도 있는 경우
## Warning in adfTest(ex8_2c, lags = 0, type = "ct"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -15.2139
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:53 2025 by user: PC
adfTest(ex8_2c, lags = 1, type = "ct")
## Warning in adfTest(ex8_2c, lags = 1, type = "ct"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -12.4421
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:53 2025 by user: PC
adfTest(ex8_2c, lags = 2, type = "ct")
## Warning in adfTest(ex8_2c, lags = 2, type = "ct"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -6.3641
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:53 2025 by user: PC
# fit1 = arima(ex8_2c, order = c(2,0,0)) # 절편 있는 AR(2) 모형 적합
# coeftest(fit1)
# sum(fit1$residuals^2)/n
fit2 = arima(ex8_2d, order = c(1,0,0)) # 절편 있는 AR(1) 모형 적합
coeftest(fit2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.723930 0.072868 9.9348 < 2.2e-16 ***
## intercept 210.280499 0.394934 532.4447 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 1.23733
# ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)
# acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")
#
# qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
# qqline(resid(fit1), col = "red")
ts.plot(fit2$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit2$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.1 0.17 -0.01 -0.02 -0.05 0.09 -0.01 -0.01 0.06 -0.01 -0.06 0.06 -0.09
## PACF -0.1 0.16 0.03 -0.05 -0.06 0.10 0.03 -0.04 0.05 0.01 -0.07 0.03 -0.06
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.04 0.08 0.08 0.06 -0.01 -0.17 -0.06 -0.03 -0.12 0.02 -0.02
## PACF -0.06 0.09 0.12 0.05 -0.06 -0.20 -0.05 0.02 -0.13 -0.01 0.00
qqnorm(resid(fit2), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit2), col = "red")

LjungBox(fit2, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 5.154844 5 0.3972768
## 12 6.345019 11 0.8493806
## 18 9.591094 17 0.9198767
## 24 15.905343 23 0.8592908
sarima(ex8_2d, 1,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 0.450696
## iter 2 value 0.114639
## iter 3 value 0.112596
## iter 4 value 0.111502
## iter 5 value 0.111443
## iter 6 value 0.111288
## iter 7 value 0.111288
## iter 8 value 0.111288
## iter 8 value 0.111288
## iter 8 value 0.111288
## final value 0.111288
## converged
## initial value 0.110257
## iter 2 value 0.110215
## iter 3 value 0.110192
## iter 4 value 0.110191
## iter 5 value 0.110191
## iter 6 value 0.110190
## iter 6 value 0.110190
## final value 0.110190
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.7239 0.0729 9.9348 0
## xmean 210.2805 0.3949 532.4447 0
##
## sigma^2 estimated as 1.23733 on 98 degrees of freedom
##
## AIC = 3.118258 AICc = 3.119495 BIC = 3.196413
##

sarima.for(ex8_2d, 6, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 207.1817 208.0372 208.6565 209.1048 209.4294 209.6644
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 1.112353 1.373238 1.491851 1.550394 1.580208 1.595611
sarima.for(ex8_2d, 12, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 207.1817 208.0372 208.6565 209.1048 209.4294 209.6644 209.8345 209.9576
## [9] 210.0467 210.1113 210.1580 210.1918
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 1.112353 1.373238 1.491851 1.550394 1.580208 1.595611 1.603624 1.607807
## [9] 1.609995 1.611141 1.611741 1.612055
8.3
(a)
library(glue)
library(astsa) # library for function acf2 & sarima
library(portes) # library for function LjungBox
library(lmtest) # library for function coeftest
library(fUnitRoots)
z = scan(glue(dataset_dir, "/ex7_5a.txt"))
length(z)
## [1] 100
ex7_5a = ts(z)
ts.plot(ex7_5a, ylab = "ex7_5a", main = "모의실험 자료")

acf(ex7_5a, lag.max = 24, main = "ex7_5a의 SACF")

pacf(ex7_5a, lag.max = 24, main = "ex7_5a의 SPACF")

adfTest(ex7_5a, lags = 0, type = "ct") # c : case3 ; 절편이 있고 추세도 있는 경우
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -1.7648
## P VALUE:
## 0.6741
##
## Description:
## Mon Jul 7 03:01:54 2025 by user: PC
adfTest(ex7_5a, lags = 1, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -2.2997
## P VALUE:
## 0.4525
##
## Description:
## Mon Jul 7 03:01:54 2025 by user: PC
adfTest(ex7_5a, lags = 2, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -2.1676
## P VALUE:
## 0.5072
##
## Description:
## Mon Jul 7 03:01:54 2025 by user: PC
adfTest(ex7_5a, lags = 3, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 3
## STATISTIC:
## Dickey-Fuller: -1.8975
## P VALUE:
## 0.6191
##
## Description:
## Mon Jul 7 03:01:54 2025 by user: PC
adfTest(ex7_5a, lags = 4, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 4
## STATISTIC:
## Dickey-Fuller: -2.1122
## P VALUE:
## 0.5302
##
## Description:
## Mon Jul 7 03:01:54 2025 by user: PC
fit1 = arima(ex7_5a, order = c(1,1,0)) # 절편 있는 AR(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.767230 0.063152 12.149 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 1.23733
diff_a_1 = diff(ex7_5a, lag = 1)
ts.plot(diff_a_1, ylab = "diff_a_1", main = "1차 차분된 모의실험 자료")

acf(diff_a_1, lag.max = 24, main = "1차 차분된 ex7_5a의 SACF")

pacf(diff_a_1, lag.max = 24, main = "1차 차분된 ex7_5a의 SPACF")

# diff_a_2 = diff(diff_a_1, lag = 1)
# ts.plot(diff_a_2, ylab = "diff_a_2", main = "2차 차분된 모의실험 자료")
# acf(diff_a_2, lag.max = 24, main = "2차 차분된 ex7_5a의 SACF")
# pacf(diff_a_2, lag.max = 24, main = "2차 차분된 ex7_5a의 SPACF")
# fit2 = arima(diff_a_1, order = c(1,0,0)) # 절편 있는 AR(1) 모형 적합
# coeftest(fit2)
# sum(fit2$residuals^2)/n
# fit3 = arima(diff_a_1, order = c(1,0,0), include.mean = FALSE) # 절편 없는 AR(1) 모형 적합
# coeftest(fit3)
# sum(fit3$residuals^2)/n
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.05 0.04 -0.02 0.01 -0.04 -0.2 -0.05 -0.03 -0.10 -0.13 0.04 0.01 0.20
## PACF 0.05 0.04 -0.03 0.02 -0.04 -0.2 -0.02 -0.01 -0.11 -0.12 0.04 -0.04 0.19
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF 0.04 0.00 0.06 -0.14 0.02 -0.07 -0.11 0.02 0.01 0.00 0.02
## PACF 0.02 -0.08 0.03 -0.16 0.02 0.00 -0.13 0.05 0.06 -0.02 0.03
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 5.071382 5 0.4072309
## 12 8.538104 11 0.6644432
## 18 16.394645 17 0.4960505
## 24 18.600503 23 0.7241524
sarima(ex7_5a, 1,1,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 2.884986
## iter 2 value 2.450885
## iter 3 value 2.450860
## iter 4 value 2.450811
## iter 5 value 2.450750
## iter 6 value 2.450747
## iter 7 value 2.450747
## iter 7 value 2.450747
## iter 7 value 2.450747
## final value 2.450747
## converged
## initial value 2.453793
## iter 2 value 2.453718
## iter 3 value 2.453531
## iter 4 value 2.453527
## iter 5 value 2.453526
## iter 5 value 2.453526
## iter 5 value 2.453526
## final value 2.453526
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.7578 0.0642 11.8025 0.0000
## constant 3.6999 4.6599 0.7940 0.4291
##
## sigma^2 estimated as 134.0786 on 97 degrees of freedom
##
## AIC = 7.805534 AICc = 7.806797 BIC = 7.884174
##

sarima.for(ex7_5a, 6, 1, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 366.3494 364.4793 363.9582 364.4595 365.7356 367.5987
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 11.57923 23.41702 35.74247 48.00212 59.91788 71.35820
sarima.for(ex7_5a, 12, 1, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 366.3494 364.4793 363.9582 364.4595 365.7356 367.5987 369.9068 372.5519
## [9] 375.4526 378.5468 381.7877 385.1398
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 11.57923 23.41702 35.74247 48.00212 59.91788 71.35820 82.27140
## [8] 92.64990 102.51002 111.88039 120.79519 129.29014
(b)
library(glue)
source(glue(tsa_function_dir, "/ex8_1.R", sep = ""), echo = F)
z = scan(glue(dataset_dir, "/ex7_5b.txt"))
n = length(z)
ex7_5b = ts(z)
ts.plot(ex7_5b, ylab = "ex7_5b", main = "모의실험 자료")

acf(ex7_5b, lag.max = 24, main = "ex7_5b의 SACF")

pacf(ex7_5b, lag.max = 12, main = "ex7_5b의 SPACF")

adfTest(ex7_5b, lags = 0, type = "c") # ct : case3 ; 절편이 있고 추세도 있는 경우
## Warning in adfTest(ex7_5b, lags = 0, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -4.5711
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:55 2025 by user: PC
adfTest(ex7_5b, lags = 1, type = "c")
## Warning in adfTest(ex7_5b, lags = 1, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -4.2143
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:55 2025 by user: PC
adfTest(ex7_5b, lags = 2, type = "c")
## Warning in adfTest(ex7_5b, lags = 2, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -3.687
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:55 2025 by user: PC
# diff_b_1 = diff(ex7_5b, lag = 1)
# ts.plot(diff_b_1, ylab = "diff_b_1", main = "1차 차분된 모의실험 자료")
# acf(diff_b_1, lag.max = 24, main = "1차 차분된 ex7_5b의 SACF")
# pacf(diff_b_1, lag.max = 24, main = "1차 차분된 ex7_5b의 SPACF")
fit1 = arima(ex7_5b, order = c(1,0,0)) # 절편 있는 AR(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.81376 0.06563 12.399 < 2.2e-16 ***
## intercept 156.94935 2.64981 59.230 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 1.23733
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.11 -0.12 0.02 -0.06 0.01 0.00 0.06 -0.03 0.07 -0.10 -0.03 -0.07 0.01
## PACF -0.11 -0.14 -0.01 -0.07 0.00 -0.02 0.06 -0.02 0.09 -0.09 -0.02 -0.12 -0.01
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.02 -0.08 0.07 -0.15 -0.11 0.09 -0.05 0.02 0.11 -0.07 -0.04
## PACF -0.07 -0.09 0.01 -0.16 -0.17 0.02 -0.09 0.00 0.07 -0.06 -0.03
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 3.218451 5 0.6663481
## 12 6.159962 11 0.8624806
## 18 11.780257 17 0.8132569
## 24 15.538792 23 0.8742903
sarima(ex7_5b, 1,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 2.019977
## iter 2 value 1.580550
## iter 3 value 1.571418
## iter 4 value 1.566079
## iter 5 value 1.565866
## iter 6 value 1.565539
## iter 7 value 1.565538
## iter 8 value 1.565538
## iter 9 value 1.565538
## iter 10 value 1.565538
## iter 10 value 1.565538
## iter 10 value 1.565538
## final value 1.565538
## converged
## initial value 1.645839
## iter 2 value 1.637141
## iter 3 value 1.633730
## iter 4 value 1.633003
## iter 5 value 1.632714
## iter 6 value 1.632479
## iter 7 value 1.632394
## iter 8 value 1.632252
## iter 9 value 1.632244
## iter 10 value 1.632229
## iter 11 value 1.632221
## iter 12 value 1.632220
## iter 13 value 1.632219
## iter 14 value 1.632219
## iter 15 value 1.632219
## iter 15 value 1.632219
## iter 15 value 1.632219
## final value 1.632219
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.8138 0.0656 12.3991 0
## xmean 156.9493 2.6498 59.2303 0
##
## sigma^2 estimated as 25.88296 on 98 degrees of freedom
##
## AIC = 6.162315 AICc = 6.163552 BIC = 6.24047
##

sarima.for(ex7_5b, 6, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 160.2456 159.6317 159.1321 158.7256 158.3948 158.1256
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 5.087530 6.559172 7.373789 7.866943 8.177158 8.376264
sarima.for(ex7_5b, 12, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 160.2456 159.6317 159.1321 158.7256 158.3948 158.1256 157.9065 157.7283
## [9] 157.5832 157.4652 157.3691 157.2909
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 5.087530 6.559172 7.373789 7.866943 8.177158 8.376264 8.505547 8.590089
## [9] 8.645617 8.682193 8.706329 8.722275
dl_b = durbin_levinson(ex7_5b, K = 10)
## SACF_1 = 0.722518827798806
## SACF_2 = 0.532281578023179
## SACF_3 = 0.427532290162719
## SACF_4 = 0.323383931010263
## SACF_5 = 0.24562960939634
## SACF_6 = 0.189032660865494
## SACF_7 = 0.147989620322317
## SACF_8 = 0.0777273968860971
## SACF_9 = 0.0338904280641514
## SACF_10 = -0.0697038279939125
## SPACF_1 = 0.722518827798806
## SPACF_2 = 0.0214410854468669
## SPACF_3 = 0.0747323191891475
## SPACF_4 = -0.0326085254834318
## SPACF_5 = 0.00446068098619576
## SPACF_6 = -0.000593629804165394
## SPACF_7 = 0.00776957156653462
## SPACF_8 = -0.0794484550361212
## SPACF_9 = -0.00495072728919832
## SPACF_10 = -0.174012303110664
sacf = dl_b$SACF ; spacf = dl_b$SPACF
sacf
## [1] 0.72251883 0.53228158 0.42753229 0.32338393 0.24562961 0.18903266
## [7] 0.14798962 0.07772740 0.03389043 -0.06970383
spacf
## [1] 0.7225188278 0.0214410854 0.0747323192 -0.0326085255 0.0044606810
## [6] -0.0005936298 0.0077695716 -0.0794484550 -0.0049507273 -0.1740123031
z_bar = mean(ex7_5b) ; z_sd = sd(ex7_5b)
ex8_1(sacf = sacf, spacf = spacf, n = n, z_bar = z_bar, z_sd = z_sd, diff = FALSE)

## |spacf[k]| = 0.722518827798806, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(2) is unacceptable
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(3) is unacceptable
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(4) is unacceptable
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(5) is unacceptable
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(6) is unacceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(2) is acceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(3) is acceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(4) is acceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(5) is acceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(6) is unacceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(7) is unacceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(8) is unacceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(9) is unacceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## AR(1)
## 적절한 모형 : AR(1), MA(5) ; 변수의 절약에 의해 AR(1) 선택
## s_wbar = 1.25789406340418
## t_0 = 125.567012831389, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
(c)
library(glue)
z = scan(glue(dataset_dir, "/ex7_5c.txt"))
n = length(z) ; n
## [1] 100
ex7_5c = ts(z)
ts.plot(ex7_5c, ylab = "ex7_5c", main = "모의실험 자료")

acf(ex7_5c, lag.max = 24, main = "ex7_5c의 SACF")

pacf(ex7_5c, lag.max = 12, main = "ex7_5c의 SPACF")

adfTest(ex7_5c, lags = 0, type = "c") # c : case2 ; 절편이 있고 추세는 없는 경우
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -2.163
## P VALUE:
## 0.2545
##
## Description:
## Mon Jul 7 03:01:56 2025 by user: PC
adfTest(ex7_5c, lags = 1, type = "c")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -3.0184
## P VALUE:
## 0.03861
##
## Description:
## Mon Jul 7 03:01:56 2025 by user: PC
adfTest(ex7_5c, lags = 2, type = "c")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -2.6091
## P VALUE:
## 0.09538
##
## Description:
## Mon Jul 7 03:01:56 2025 by user: PC
diff_c_1 = diff(ex7_5c, lag = 1)
ts.plot(diff_c_1, ylab = "diff_c_1", main = "1차 차분된 모의실험 자료")

acf(diff_c_1, lag.max = 24, main = "1차 차분된 ex7_5c의 SACF")

pacf(diff_c_1, lag.max = 24, main = "1차 차분된 ex7_5c의 SPACF")

fit1 = arima(ex7_5c, order = c(0,1,1)) # 차분된 MA(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.490465 0.098624 4.9731 6.589e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 101.1674
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.04 -0.07 -0.01 -0.08 0.05 0.02 0.05 0.01 0.01 -0.14 -0.05 -0.09 0.03
## PACF -0.04 -0.07 -0.02 -0.08 0.04 0.01 0.05 0.01 0.03 -0.14 -0.06 -0.12 0.01
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.03 -0.10 0.04 -0.17 -0.13 0.09 0.01 0.03 0.04 -0.11 0.04
## PACF -0.07 -0.11 0.01 -0.17 -0.16 0.05 -0.02 -0.01 0.02 -0.10 0.02
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 1.610159 5 0.9000181
## 12 5.268267 11 0.9174815
## 18 12.559940 17 0.7651106
## 24 15.944937 23 0.8576157
sarima(ex7_5c, 0,1,1) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 2.404331
## iter 2 value 2.324240
## iter 3 value 2.315202
## iter 4 value 2.313319
## iter 5 value 2.313219
## iter 6 value 2.313218
## iter 6 value 2.313218
## final value 2.313218
## converged
## initial value 2.314064
## iter 2 value 2.314052
## iter 3 value 2.314052
## iter 4 value 2.314052
## iter 4 value 2.314052
## iter 4 value 2.314052
## final value 2.314052
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ma1 0.4896 0.0988 4.9562 0.0000
## constant 0.5815 1.5073 0.3858 0.7005
##
## sigma^2 estimated as 102.037 on 97 degrees of freedom
##
## AIC = 7.526587 AICc = 7.527849 BIC = 7.605227
##

sarima.for(ex7_5c, 6, 0, 1, 1) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 157.0887 157.6701 158.2516 158.8331 159.4146 159.9960
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 10.10134 18.12317 23.55550 27.95127 31.74407 35.12973
sarima.for(ex7_5c, 12, 0, 1, 1) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 157.0887 157.6701 158.2516 158.8331 159.4146 159.9960 160.5775 161.1590
## [9] 161.7405 162.3220 162.9034 163.4849
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 10.10134 18.12317 23.55550 27.95127 31.74407 35.12973 38.21662 41.07216
## [9] 43.74168 46.25740 48.64318 50.91730
dl_c = durbin_levinson(diff_c_1, K = 10)
## SACF_1 = 0.337052005868872
## SACF_2 = -0.0901532330103759
## SACF_3 = -0.0670503016317994
## SACF_4 = -0.0639384797660444
## SACF_5 = 0.026774608744401
## SACF_6 = 0.0575318500113969
## SACF_7 = 0.0567078831710675
## SACF_8 = 0.0421486131051896
## SACF_9 = -0.037331191988209
## SACF_10 = -0.160661576961136
## SPACF_1 = 0.337052005868872
## SPACF_2 = -0.229871637773007
## SPACF_3 = 0.0569343420154281
## SPACF_4 = -0.0923809620347461
## SPACF_5 = 0.0912601835104974
## SPACF_6 = -0.00855560007322475
## SPACF_7 = 0.0598573005602513
## SPACF_8 = 0.00672004405866938
## SPACF_9 = -0.0431155246195279
## SPACF_10 = -0.141952493470491
sacf = dl_c$SACF ; spacf = dl_c$SPACF
z_bar = mean(ex7_5c) ; z_sd = sd(ex7_5c)
ex8_1(sacf = sacf, spacf = spacf, n = n, z_bar = z_bar, z_sd = z_sd, diff = TRUE)

## |spacf[k]| = 0.337052005868872, crit = 0.196
## H_0 : phi_11 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(1) is acceptable
## |spacf[k]| = -0.229871637773007, crit = 0.196
## H_0 : phi_22 = 0 는 유의수준 alpha = 0.05에서 기각된다, AR(2) is acceptable
## H_0 : phi_33 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(3) is unacceptable
## H_0 : phi_44 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(4) is unacceptable
## H_0 : phi_55 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(5) is unacceptable
## H_0 : phi_66 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(6) is unacceptable
## H_0 : phi_77 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(7) is unacceptable
## H_0 : phi_88 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(8) is unacceptable
## H_0 : phi_99 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(9) is unacceptable
## H_0 : phi_1010 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, AR(10) is unacceptable
##
## H_0 : rho_1 = 0 는 유의수준 alpha = 0.05에서 기각된다, MA(1) is acceptable
## H_0 : rho_2 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(2) is unacceptable
## H_0 : rho_3 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(3) is unacceptable
## H_0 : rho_4 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(4) is unacceptable
## H_0 : rho_5 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(5) is unacceptable
## H_0 : rho_6 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(6) is unacceptable
## H_0 : rho_7 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(7) is unacceptable
## H_0 : rho_8 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(8) is unacceptable
## H_0 : rho_9 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(9) is unacceptable
## H_0 : rho_10 = 0 는 유의수준 alpha = 0.05에서 기각되지 못한다, MA(10) is unacceptable
## MA(1)
## 적절한 모형 : AR(2), MA(1) ; 변수의 절약에 의해 MA(1) 선택
## t_0 = 4.68511731315588, t_alpha = 1.66055121706573
## H_0 : delta = 0 은 유의수준 alpha = 0.05 에서 기각한다, 상수항은 유의하다.
(d)
library(glue)
z = scan(glue(dataset_dir, "/ex7_5d.txt"))
n = length(z)
ex7_5d = ts(z)
ts.plot(ex7_5d, ylab = "ex7_5d", main = "모의실험 자료")

acf(ex7_5d, lag.max = 24, main = "ex7_5d의 SACF")

pacf(ex7_5d, lag.max = 12, main = "ex7_5d의 SPACF")

adfTest(ex7_5d, lags = 0, type = "ct") # ct : case3 ; 절편이 있고 추세도 있는 경우
## Warning in adfTest(ex7_5d, lags = 0, type = "ct"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -4.9988
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:57 2025 by user: PC
adfTest(ex7_5d, lags = 1, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -3.6051
## P VALUE:
## 0.03626
##
## Description:
## Mon Jul 7 03:01:57 2025 by user: PC
adfTest(ex7_5d, lags = 2, type = "ct")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -2.521
## P VALUE:
## 0.3608
##
## Description:
## Mon Jul 7 03:01:57 2025 by user: PC
diff_d_1 = diff(ex7_5d, lag = 1)
ts.plot(diff_d_1, ylab = "diff_d_1", main = "1차 차분된 모의실험 자료")

acf(diff_d_1, lag.max = 24, main = "1차 차분된 ex7_5d의 SACF")

pacf(diff_d_1, lag.max = 24, main = "1차 차분된 ex7_5d의 SPACF")

fit1 = arima(ex7_5d, order = c(2,1,0)) # 차분된 AR(2) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.356938 0.095784 -3.7265 0.0001942 ***
## ar2 -0.339485 0.096399 -3.5217 0.0004289 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 68.7794
fit2 = arima(ex7_5d, order = c(0,1,2)) # 차분된 MA(2) 모형 적합
coeftest(fit2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.33631 0.12716 -2.6448 0.008173 **
## ma2 -0.10829 0.11377 -0.9519 0.341153
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 71.82533
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF -0.13 -0.15 -0.14 -0.11 0.11 0.13 -0.02 0.01 -0.01 0.00 -0.01 0.04
## PACF -0.13 -0.17 -0.20 -0.21 -0.02 0.07 -0.01 0.05 0.06 0.05 0.01 0.06
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.03 -0.03 0.06 -0.05 -0.07 0.02 0.08 0.01 0.09 -0.07 -0.03 -0.03
## PACF 0.00 -0.03 0.05 -0.04 -0.11 -0.05 0.05 -0.02 0.10 0.02 0.05 -0.02
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 10.50492 4 0.03272933
## 12 10.81881 10 0.37180756
## 18 12.41643 16 0.71485057
## 24 15.17529 22 0.85460608
sarima(ex7_5d, 2,1,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 2.172286
## iter 2 value 2.046251
## iter 3 value 2.037955
## iter 4 value 2.036654
## iter 5 value 2.035613
## iter 6 value 2.034870
## iter 7 value 2.034867
## iter 8 value 2.034864
## iter 8 value 2.034864
## final value 2.034864
## converged
## initial value 2.057985
## iter 2 value 2.057929
## iter 3 value 2.057529
## iter 4 value 2.057528
## iter 5 value 2.057528
## iter 6 value 2.057528
## iter 6 value 2.057528
## iter 6 value 2.057528
## final value 2.057528
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 -0.4323 0.0920 -4.6979 0e+00
## ar2 -0.4209 0.0928 -4.5353 0e+00
## constant 1.6442 0.4264 3.8555 2e-04
##
## sigma^2 estimated as 60.955 on 96 degrees of freedom
##
## AIC = 7.033741 AICc = 7.036292 BIC = 7.138594
##

sarima.for(ex7_5d, 6, 2, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 183.3406 184.9662 186.7461 188.3394 189.9484 191.6292
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 7.807369 8.977767 9.348219 10.515690 11.489462 12.095163
sarima.for(ex7_5d, 12, 2, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 183.3406 184.9662 186.7461 188.3394 189.9484 191.6292 193.2723 194.9015
## [9] 196.5525 198.2000 199.8398 201.4845
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 7.807369 8.977767 9.348219 10.515690 11.489462 12.095163 12.811963
## [8] 13.543252 14.159353 14.761713 15.365321 15.930937
(e)
library(glue)
z = scan(glue(dataset_dir, "/ex7_5e.txt"))
length(z)
## [1] 100
ex7_5e = ts(z)
ts.plot(ex7_5e, ylab = "ex7_5e", main = "모의실험 자료")

acf(ex7_5e, lag.max = 24, main = "ex7_5e의 SACF")

pacf(ex7_5e, lag.max = 12, main = "ex7_5e의 SPACF")

adfTest(ex7_5e, lags = 0, type = "c") # c : case2 ; 절편이 있고 추세도 있는 경우
## Warning in adfTest(ex7_5e, lags = 0, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -4.0282
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:58 2025 by user: PC
adfTest(ex7_5e, lags = 1, type = "c")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -3.3024
## P VALUE:
## 0.01921
##
## Description:
## Mon Jul 7 03:01:58 2025 by user: PC
adfTest(ex7_5e, lags = 2, type = "c")
## Warning in adfTest(ex7_5e, lags = 2, type = "c"): p-value smaller than printed
## p-value
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -3.7029
## P VALUE:
## 0.01
##
## Description:
## Mon Jul 7 03:01:58 2025 by user: PC
fit1 = arima(ex7_5d, order = c(1,0,0)) # AR(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.991321 0.010384 95.4699 < 2e-16 ***
## intercept 103.089114 58.520544 1.7616 0.07814 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 84.3522
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF -0.33 -0.25 0.13 -0.08 0.03 0.11 -0.08 -0.01 0.03 -0.03 -0.03 0.08
## PACF -0.33 -0.40 -0.16 -0.25 -0.15 -0.01 -0.04 0.00 0.02 0.01 -0.05 0.03
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.05 -0.04 0.09 -0.03 -0.11 0.04 0.07 -0.06 0.06 -0.05 0.01 -0.03
## PACF -0.03 -0.06 0.02 0.01 -0.11 -0.12 -0.03 -0.07 0.02 -0.02 0.07 -0.04
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 21.32740 5 0.0007024203
## 12 22.97128 11 0.0178406612
## 18 26.17639 17 0.0713062735
## 24 28.17450 23 0.2092546261
sarima(ex7_5e, 1,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 0.398876
## iter 2 value -0.040831
## iter 3 value -0.042521
## iter 4 value -0.043305
## iter 5 value -0.043326
## iter 6 value -0.043371
## iter 7 value -0.043371
## iter 8 value -0.043371
## iter 8 value -0.043371
## iter 8 value -0.043371
## final value -0.043371
## converged
## initial value -0.001073
## iter 2 value -0.004049
## iter 3 value -0.005960
## iter 4 value -0.006351
## iter 5 value -0.006623
## iter 6 value -0.006809
## iter 7 value -0.006851
## iter 8 value -0.006892
## iter 9 value -0.006892
## iter 10 value -0.006892
## iter 11 value -0.006893
## iter 12 value -0.006893
## iter 13 value -0.006893
## iter 14 value -0.006893
## iter 15 value -0.006893
## iter 16 value -0.006893
## iter 16 value -0.006893
## final value -0.006893
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.7967 0.0655 12.1657 0
## xmean 12.9581 0.4762 27.2128 0
##
## sigma^2 estimated as 0.9764233 on 98 degrees of freedom
##
## AIC = 2.884091 AICc = 2.885328 BIC = 2.962246
##

sarima.for(ex7_5e, 6, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 11.39799 11.71509 11.96773 12.16903 12.32940 12.45719
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 0.9881413 1.2634315 1.4105788 1.4964995 1.5485704 1.5807354
sarima.for(ex7_5e, 12, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 11.39799 11.71509 11.96773 12.16903 12.32940 12.45719 12.55900 12.64011
## [9] 12.70474 12.75623 12.79726 12.82995
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 0.9881413 1.2634315 1.4105788 1.4964995 1.5485704 1.5807354 1.6008185
## [8] 1.6134376 1.6213972 1.6264298 1.6296165 1.6316362
fit2 = arima(ex7_5d, order = c(1,0,0), include.mean = FALSE, method = "ML") # AR(1) 모형 적합
coeftest(fit2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.9974139 0.0032955 302.66 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 84.43581
ts.plot(fit2$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit2$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF -0.31 -0.28 0.12 -0.08 0.04 0.11 -0.08 -0.01 0.03 -0.02 -0.02 0.07
## PACF -0.31 -0.42 -0.17 -0.29 -0.16 -0.04 -0.04 0.01 0.03 0.05 0.00 0.09
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF -0.05 -0.05 0.11 -0.03 -0.09 0.04 0.05 -0.04 0.07 -0.06 0.01 -0.04
## PACF 0.02 -0.04 0.05 0.02 -0.07 -0.08 -0.01 -0.04 0.07 0.02 0.12 0.00
qqnorm(resid(fit2), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit2), col = "red")

LjungBox(fit2, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 21.90363 5 0.00054615
## 12 23.19846 11 0.01656986
## 18 26.57494 17 0.06460340
## 24 28.45057 23 0.19922163
sarima(ex7_5e, 1,0,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value 0.398876
## iter 2 value -0.040831
## iter 3 value -0.042521
## iter 4 value -0.043305
## iter 5 value -0.043326
## iter 6 value -0.043371
## iter 7 value -0.043371
## iter 8 value -0.043371
## iter 8 value -0.043371
## iter 8 value -0.043371
## final value -0.043371
## converged
## initial value -0.001073
## iter 2 value -0.004049
## iter 3 value -0.005960
## iter 4 value -0.006351
## iter 5 value -0.006623
## iter 6 value -0.006809
## iter 7 value -0.006851
## iter 8 value -0.006892
## iter 9 value -0.006892
## iter 10 value -0.006892
## iter 11 value -0.006893
## iter 12 value -0.006893
## iter 13 value -0.006893
## iter 14 value -0.006893
## iter 15 value -0.006893
## iter 16 value -0.006893
## iter 16 value -0.006893
## final value -0.006893
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.7967 0.0655 12.1657 0
## xmean 12.9581 0.4762 27.2128 0
##
## sigma^2 estimated as 0.9764233 on 98 degrees of freedom
##
## AIC = 2.884091 AICc = 2.885328 BIC = 2.962246
##

sarima.for(ex7_5e, 6, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 11.39799 11.71509 11.96773 12.16903 12.32940 12.45719
##
## $se
## Time Series:
## Start = 101
## End = 106
## Frequency = 1
## [1] 0.9881413 1.2634315 1.4105788 1.4964995 1.5485704 1.5807354
sarima.for(ex7_5e, 12, 1, 0, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 11.39799 11.71509 11.96773 12.16903 12.32940 12.45719 12.55900 12.64011
## [9] 12.70474 12.75623 12.79726 12.82995
##
## $se
## Time Series:
## Start = 101
## End = 112
## Frequency = 1
## [1] 0.9881413 1.2634315 1.4105788 1.4964995 1.5485704 1.5807354 1.6008185
## [8] 1.6134376 1.6213972 1.6264298 1.6296165 1.6316362
8.4
library(glue)
z = scan(glue(dataset_dir, "/interest.txt"))
n = length(z)
interest = ts(z)
ts.plot(interest, ylab = "interest", main = "이자율 자료")

acf(interest, lag.max = 24, main = "이자율의 SACF")

pacf(interest, lag.max = 24, main = "이자율의 SPACF")

adfTest(interest, lags = 0, type = "c") # c : case2 ; 절편이 있고 추세도 있는 경우
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 0
## STATISTIC:
## Dickey-Fuller: -2.1897
## P VALUE:
## 0.2432
##
## Description:
## Mon Jul 7 03:01:59 2025 by user: PC
adfTest(interest, lags = 1, type = "c")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -2.2586
## P VALUE:
## 0.2177
##
## Description:
## Mon Jul 7 03:01:59 2025 by user: PC
adfTest(interest, lags = 2, type = "c")
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 2
## STATISTIC:
## Dickey-Fuller: -2.3139
## P VALUE:
## 0.1971
##
## Description:
## Mon Jul 7 03:01:59 2025 by user: PC
diff_int = diff(interest, lag = 1)
ts.plot(diff_int, ylab = "diff_int", main = "1차 차분된 이자율 자료")

acf(diff_int, lag.max = 24, main = "1차 차분된 이자율의 SACF")

pacf(diff_int, lag.max = 24, main = "1차 차분된 이자율의 SPACF")

fit1 = arima(interest, order = c(1,1,0)) # 1차 차분된 AR(1) 모형 적합
coeftest(fit1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.316737 0.075887 4.1738 2.996e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit1$residuals^2)/n
## [1] 0.2553032
fit2 = arima(interest, order = c(0,1,1)) # 1차 차분된 MA(1) 모형 적합
coeftest(fit2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.295422 0.075824 3.8961 9.773e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sum(fit2$residuals^2)/n
## [1] 0.2580358
ts.plot(fit1$residuals, main = "적합된 모형의 잔차 시계열그림"); abline(h = 0)

acf2(fit1$residuals, max.lag = 24, main = "적합된 모형의 잔차 SACF와 SPACF")

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF -0.03 0.02 0.05 -0.14 0.00 -0.01 -0.11 0.10 0.07 -0.1 0.02 0.12 -0.04
## PACF -0.03 0.02 0.05 -0.13 -0.01 -0.01 -0.10 0.08 0.08 -0.1 -0.02 0.15 -0.01
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF 0.00 0.12 -0.15 0.02 -0.09 -0.07 0.10 -0.02 -0.07 0.03 -0.04
## PACF -0.05 0.15 -0.12 -0.04 -0.06 0.01 0.03 -0.02 -0.04 -0.04 -0.03
qqnorm(resid(fit1), main = "적합된 모형의 잔차의 정규성검정")
qqline(resid(fit1), col = "red")

LjungBox(fit1, lags = seq(6, 24, 6)) # 잔차의 포트맨토 검정
## lags statistic df p-value
## 6 3.806045 5 0.5776650
## 12 12.932207 11 0.2977795
## 18 21.755995 17 0.1942859
## 24 26.138732 23 0.2943607
sarima(interest, 1,1,0) # sarima를 이용한 모형 적합을 이용한 경우
## initial value -0.659850
## iter 2 value -0.708787
## iter 3 value -0.709020
## iter 4 value -0.709037
## iter 5 value -0.709049
## iter 5 value -0.709049
## iter 5 value -0.709049
## final value -0.709049
## converged
## initial value -0.680849
## iter 2 value -0.681173
## iter 3 value -0.681294
## iter 4 value -0.681322
## iter 5 value -0.681325
## iter 6 value -0.681325
## iter 6 value -0.681325
## final value -0.681325
## converged
## <><><><><><><><><><><><><><>
##
## Coefficients:
## Estimate SE t.value p.value
## ar1 0.3131 0.0759 4.1260 0.0001
## constant -0.0465 0.0570 -0.8152 0.4162
##
## sigma^2 estimated as 0.2558226 on 164 degrees of freedom
##
## AIC = 1.511372 AICc = 1.511816 BIC = 1.567613
##

sarima.for(interest, 6, 1, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 168
## End = 173
## Frequency = 1
## [1] 11.80738 11.75271 11.70367 11.65639 11.60966 11.56311
##
## $se
## Time Series:
## Start = 168
## End = 173
## Frequency = 1
## [1] 0.5057891 0.8348003 1.0982983 1.3183393 1.5089356 1.6786869
sarima.for(interest, 12, 1, 1, 0) # 예측값의 시계열 그림

## $pred
## Time Series:
## Start = 168
## End = 179
## Frequency = 1
## [1] 11.80738 11.75271 11.70367 11.65639 11.60966 11.56311 11.51660 11.47012
## [9] 11.42364 11.37716 11.33068 11.28420
##
## $se
## Time Series:
## Start = 168
## End = 179
## Frequency = 1
## [1] 0.5057891 0.8348003 1.0982983 1.3183393 1.5089356 1.6786869 1.8329740
## [8] 1.9753018 2.1080582 2.2329404 2.3512004 2.4637909